package com.learning.platform.dto;

import com.learning.platform.enums.NoteType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

import java.util.List;

/**
 * 笔记请求DTO
 */
public class NoteRequest {
    
    private Long courseId;
    
    private Long lessonId;
    
    private Integer videoTimestamp;
    
    @NotBlank(message = "笔记标题不能为空")
    @Size(max = 200, message = "笔记标题不能超过200个字符")
    private String title;
    
    @NotBlank(message = "笔记内容不能为空")
    private String content;
    
    private List<String> tags;
    
    private NoteType noteType = NoteType.GENERAL;
    
    private Boolean isPublic = false;
    
    // Constructors
    public NoteRequest() {}
    
    public NoteRequest(Long courseId, String title, String content) {
        this.courseId = courseId;
        this.title = title;
        this.content = content;
    }
    
    // Getters and Setters
    public Long getCourseId() {
        return courseId;
    }
    
    public void setCourseId(Long courseId) {
        this.courseId = courseId;
    }
    
    public Long getLessonId() {
        return lessonId;
    }
    
    public void setLessonId(Long lessonId) {
        this.lessonId = lessonId;
    }
    
    public Integer getVideoTimestamp() {
        return videoTimestamp;
    }
    
    public void setVideoTimestamp(Integer videoTimestamp) {
        this.videoTimestamp = videoTimestamp;
    }
    
    public String getTitle() {
        return title;
    }
    
    public void setTitle(String title) {
        this.title = title;
    }
    
    public String getContent() {
        return content;
    }
    
    public void setContent(String content) {
        this.content = content;
    }
    
    public List<String> getTags() {
        return tags;
    }
    
    public void setTags(List<String> tags) {
        this.tags = tags;
    }
    
    public NoteType getNoteType() {
        return noteType;
    }
    
    public void setNoteType(NoteType noteType) {
        this.noteType = noteType;
    }
    
    public Boolean getIsPublic() {
        return isPublic;
    }
    
    public void setIsPublic(Boolean isPublic) {
        this.isPublic = isPublic;
    }
}
